package com.qdairlines.service.base;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.qdairlines.common.Page;
/**
 * 
 * @author pangyannan
 * @date 2016年6月19日
 * @company QingDao Airlines
 * @description 对于通用Service，  
 * 				只要是在对应的Mapper中实现了由mybatis自动实现的6个增删改查方法，
 * 				 都可以在自定义的Service中继承该接口
 * @param <T>
 * @param <ID>
 */
public interface BaseService <T,ID>{
	
	  void setBaseMapper();
	  
	  /**
	   * 根据id删除数据
	   * Mybatis自动生成
	   * 
	   * @param id
	   * @return
	   */
	  int deleteByPrimaryKey(ID id);
	  
	  /**
	   * 添加一条完整数据
	   * Mybatis自动生成
	   * 
	   * @param id
	   * @return
	   */
	  int save(T record);
	  
	  /**
	   * 添加一条数据，数据内容不固定
	   * Mybatis自动生成
	   * 
	   * @param id
	   * @return
	   */
	  int saveSelective(T record);
	  
	  /**
	   * 根据id查找一条数据
	   * Mybatis自动生成
	   * 
	   * @param id
	   * @return
	   */
	  T   getByPrimaryKey(ID id);
	  
	  /**
	   * 修改一条数据，修改内容 按需修改
	   * Mybatis自动生成
	   * @param id
	   * @return
	   */
	  int updateByPrimaryKeySelective(T record);
	  
	  /**
	   * 修改一条数据，所有内容均修改
	   * Mybatis自动生成
	   * @param id
	   * @return
	   */
	  int updateByPrimaryKey(T record);
	  
/*******************以上是自动生成的***********************************/
	  
	  
	  /**
	   * 自定义的Service接口, 根据组合搜索条件，返回List列表
	   * @param record
	   * @return
	   */
	  List<T> listData(T record);
	  
	 
	  /**
	   * 自定义的Service接口，根据组合搜索条件，返回Page
	   * @param record
	   * @param Page
	   * @return
	   */
	  Page listData(T record,Page page);
	  
	  /**
	   * 根据当前页数 、总页数，返回Page,  request 中必须包含 offset 参数，limit 参数
	   * @param request
	   * @return
	   */
	  Page getPageFromRequest(HttpServletRequest request);
	  
	
}
